package com.my.juc.sync;

/**
 * @author zhupanlin
 * @version 1.0
 * @description: TODO
 * @date 2024/3/5 14:13
 */

// 创建资源类，定义属性和操作方法
class Ticket{
    
    // 票数
    private int number = 1000;
    
    private int count = 0;
    
    // 操作方法：卖票 
    // 此锁对象为this
    public void sale(){
        // 判断是否有票
        if (number > 0){
            System.out.println(Thread.currentThread().getName() + ":卖出了第" 
                    + (++count) + "张票剩下" + (--number) + "张票" );
        }
        
        
    }
    
}

public class SaleTicket {

    // 创建多个线程，调用资源类方法
    public static void main(String[] args) {
        // 创建Ticket对象
        Ticket ticket = new Ticket();
        // 创建三个线程
        new Thread(new Runnable() {
            @Override
            public void run() {
                // 调用卖票方法
                for (int i = 0; i < 1000; i++) {
                    ticket.sale();
                }
            }
        }, "BB").start();
        new Thread(new Runnable() {
            @Override
            public void run() {
                // 调用卖票方法
                for (int i = 0; i < 1000; i++) {
                    ticket.sale();
                }
            }
        }, "AA").start();
        
        new Thread(new Runnable() {
            @Override
            public void run() {
                // 调用卖票方法
                for (int i = 0; i < 1000; i++) {
                    ticket.sale();
                }
            }
        }, "CC").start();
    }
    
    
}


